package com.tulele.vtool.service;

import com.tulele.vtool.model.BArticleTableInfo;
import com.tulele.vtool.model.combinedEntity.CombinedAritcleTableDetail;
import com.tulele.vtool.model.combinedEntity.CombinedAritcleTableInfo;
import com.tulele.vtool.model.combinedEntity.CombinedCustomerInfo;
import com.tulele.vtool.model.combinedEntity.CombinedCustomerYearInfo;

import java.util.List;

public interface ArticleTableInfoService {
    /**
     * 保存用户文章信息采集表单
     * @param entity 实体类
     * @return 主键 ID
     */
    int saveArticleTableInfo(BArticleTableInfo entity);

    /**
     * 根据 ID 获取文章采集信息
     * @param id 主键 ID
     * @return 文章采集信息
     */
    CombinedAritcleTableInfo getArticleTableInfoById(Integer id);

    /**
     * 获取用户收到的反馈表单总数量
     * @param userId 用户 ID
     * @return 用户收到的反馈表单总数量
     */
    int getArticleTableCountByOwner(Integer userId);

    /**
     * 获取最近三天用户收到的反馈表单总数量
     * @param userId 用户 ID
     * @return 最近三天用户收到的反馈表单总数量
     */
    int getLatestThreeDaysCount(Integer userId);

    /**
     * 获取用户收到的反馈表单明细
     * @param userId 用户 ID
     * @return 用户收到的反馈表单明细
     */
    List<CombinedAritcleTableDetail> getArticleTableDetail(Integer userId);

    /**
     * 获取本周的用户表单数量列表
     * @param userId 用户 ID
     * @return 本周的用户表单数量列表
     */
    List<CombinedCustomerInfo> getCurrentWeekTableData(Integer userId);

    /**
     * 获取本月的用户表单数量列表
     * @param userId 用户 ID
     * @return 本月的用户表单数量列表
     */
    List<CombinedCustomerInfo> getCurrentMonthTableData(Integer userId);

    /**
     * 获取本季的用户表单数量列表
     * @param userId 用户 ID
     * @return 本季的用户表单数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentSeasonTableData(Integer userId);

    /**
     * 获取年度的用户表单数量列表
     * @param userId 用户 ID
     * @return 年度的用户表单数量列表
     */
    List<CombinedCustomerYearInfo> getCurrentYearTableData(Integer userId);

    /**
     * 查看用户是否提交过该文章的表单
     * @param userId 用户 ID
     * @param articleId 文章 ID
     * @return 提交状态 0-未提交 1-已提交
     */
    int getUserCommitStatus(Integer userId, Integer articleId);
}
